#ifndef PUSHERSTEPCALCULATOR_H
#define PUSHERSTEPCALCULATOR_H

#include "Board.h"
#include "GameObject.h"
#include "Direction.h"
#include "MoveStepCalculator.h"
#include "Step.h"
#include "Activatable.h"

class PusherStepCalculator: public StepCalculator
{
public:
	PusherStepCalculator();
	virtual ~PusherStepCalculator();

	void SetActivator(GameObject* pusher);
	void SetPushDirection(const Direction& direction);
	virtual void GenerateSteps(Board& board);
	virtual void Execute();

protected:

private:
	void Clear();
	
	Direction pushDirection;
	std::list<Step*> steps;
	MoveStepCalculator moveStepCalculator;
	GameObject* activatableObject;
	Activatable* activatableInterface;
};

#endif //PUSHERSTEPCALCULATOR_H
